www.gusucode.com > VC++ 汽配销售管理系统(Access)源码程序 > VC++ 汽配销售管理系统(Access)源码程序/源码/DCheck.cpp

    //Download by http://www.NewXing.com
// DCheck.cpp : implementation file
//

#include "stdafx.h"
#include "qpglxt.h"
#include "DCheck.h"
#include "externDllHeader.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDCheck dialog
extern CQpglxtApp theApp;

CDCheck::CDCheck(CWnd* pParent /*=NULL*/)
	: CDialog(CDCheck::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDCheck)
	//}}AFX_DATA_INIT
}


void CDCheck::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDCheck)
	DDX_Control(pDX, IDC_INPUT_STAOP, m_StaOP);
	DDX_Control(pDX, IDC_INPUT_STAID, m_StaID);
	DDX_Control(pDX, IDC_INPUT_STADATE, m_StaDate);
	DDX_Control(pDX, IDC_INPUT_GRID, m_Grid);
	DDX_Control(pDX, IDC_INPUT_EDTSTORE, m_EdtStore);
	DDX_Control(pDX, IDC_INPUT_EDTDEAR, m_EdtDear);
	DDX_Control(pDX, IDC_INPUT_BUTUNDO, m_ButUndo);
	DDX_Control(pDX, IDC_INPUT_BUTSAVE, m_ButSave);
	DDX_Control(pDX, IDC_INPUT_BUTPRINT, m_ButPrint);
	DDX_Control(pDX, IDC_INPUT_BUTEXIT, m_ButExit);
	DDX_Control(pDX, IDC_INPUT_BUTBOOKIN, m_ButBookin);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDCheck, CDialog)
	//{{AFX_MSG_MAP(CDCheck)
	ON_WM_PAINT()
	ON_BN_CLICKED(IDC_INPUT_BUTBOOKIN, OnInputButbookin)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_INPUT_BUTEXIT, OnInputButexit)
	ON_BN_CLICKED(IDC_INPUT_BUTSAVE, OnInputButsave)
	ON_BN_CLICKED(IDC_INPUT_BUTUNDO, OnInputButundo)
	ON_BN_CLICKED(IDC_INPUT_BUTPRINT, OnInputButprint)
	//}}AFX_MSG_MAP
	ON_MESSAGE(DIY_SETFOCUS,OnCellSetFocus)
	ON_MESSAGE(DIY_KILLFOCUS,OnCellKillFocus)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDCheck message handlers

void CDCheck::OnOK() 
{
	// TODO: Add extra validation here
	
//	CDialog::OnOK();
}


BOOL CDCheck::OnInitDialog() 
{
	CDialog::OnInitDialog();
	m_StaDate.SetTextColor(RGB(0,0,0));
	m_StaID.SetTextColor(RGB(0,0,0));
	m_StaOP.SetTextColor(RGB(0,0,0));
	CString sSQL;
	rst.Open("仓库信息查询");
	m_EdtStore.Initialize(this->GetParent());
	m_EdtStore.StartUpAssciation=false;
	m_EdtStore.SetRecordset(rst);
	m_EdtStore.SetSelectField("名称");
	
	sSQL.Format("SELECT 编号,姓名 FROM 员工信息表");
	rst.Open(sSQL,adCmdText);
	m_EdtDear.Initialize(this->GetParent());
	m_EdtDear.SetRecordset(rst);
	m_EdtDear.SetSelectField("姓名");
	CString Fields[]={"配件名称","适用车型","规格","产地","计量单位","库存数量","盘点数量"};
	int ColWidth[]={165,90,100,100,70,75,75};
	for(int m=0;m<7;m++)
	{
		m_Grid.InsertColumn(m,Fields[m]);
		m_Grid.SetColumnWidth(m,ColWidth[m]);
	}	
	m_Grid.m_Edit.Initialize(this->GetParent());
	this->m_StaOP.SetWindowText(OP);
		return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDCheck::OnPaint() 
{
	CPaintDC dc(this); // device context for painting
	
			//根据分辩率画背景
	CBitmap bit;
	CDC memDC;
	CRect rect;
	this->GetClientRect(&rect);
		bit.LoadBitmap(IDB_KCPD);

	memDC.CreateCompatibleDC(&dc);
	memDC.SelectObject(&bit);
	dc.BitBlt(22,23,rect.Width(),rect.Height(),&memDC,0,0,SRCCOPY);
	memDC.DeleteDC();
	::DeleteObject(&bit);		
	// Do not call CDialog::OnPaint() for painting messages
}

void CDCheck::Clear()
{
	this->m_EdtStore.SetWindowText("");
	this->m_Grid.DeleteAllItems();
}

void CDCheck::Enabled(bool bEnabled)
{
	this->m_Grid.ReadOnly(bEnabled);
	this->m_ButBookin.EnableWindow(bEnabled);
	this->m_ButExit.EnableWindow(bEnabled);
	this->m_ButPrint.EnableWindow(bEnabled);
	this->m_ButSave.EnableWindow(!bEnabled);
	this->m_ButUndo.EnableWindow(!bEnabled);

}

void CDCheck::OnInputButbookin() 
{
	CTime time;
	CString cTime,NewID;
	NewID=ado.AutoNumber("盘点信息表","票号","PD",3);
	NewID=NewID+"   ";
	this->m_StaID.SetWindowText(NewID);
	time=time.GetCurrentTime();
	cTime=CTimeToCString(time); 
	cTime=cTime+"    ";
	this->m_StaDate.SetWindowText(cTime);
	this->m_EdtStore.SetFocus();
	this->Enabled(false);
	this->Clear();	
}

HBRUSH CDCheck::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
		if(pWnd==&this->m_StaDate||	pWnd==&this->m_StaID)
	{
		pDC->SetBkColor(RGB(255,255,255));
		pDC->SetTextColor(RGB(0,0,0));
	}
	
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

BOOL CDCheck::PreTranslateMessage(MSG* pMsg) 
{
	if(pMsg->hwnd==this->m_EdtDear&&pMsg->message==WM_KEYDOWN&&pMsg->wParam==9)
	{
		this->m_Grid.InsertItem(0,"");
		this->m_Grid.SetRow(0);
		this->m_Grid.SetCol(0);
		this->m_Grid.BeginEdit(0,0);
		this->m_Grid.m_Edit.SetFocus();
		pMsg->wParam=VK_CONTROL ;
	}
	if(pMsg->message==WM_KEYDOWN&&pMsg->wParam==VK_ESCAPE)
	{
		pMsg->wParam=VK_CONTROL ;
		this->OnInputButexit();
	}	
	return CDialog::PreTranslateMessage(pMsg);
}

void CDCheck::OnInputButexit() 
{
	CString MsgText;
	MsgText.Format("确定要退出库存盘点模块吗?");

	if(MessageBox(MsgText,"系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1)	
		return;
	this->OnCancel();
	
}
void CDCheck::OnCellSetFocus()
{
	CString sSQL, sName,sType,sSpec,sAddr;
	switch(m_Grid.GetCol())
	{
	case 0:
		m_Grid.m_Edit.SetReadOnly(false);
		m_Grid.m_Edit.NumberOnly(false);
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		rst.Open("SELECT DISTINCT 名称,简称 from 商品信息表",adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=true;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("名称");
		m_Grid.m_Edit.AutoPosition();
		break;
	case 1:
		m_Grid.m_Edit.SetReadOnly(false);
		m_Grid.m_Edit.NumberOnly(false);
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sSQL.Format("SELECT DISTINCT 名称,适用车型 from 商品信息查询 WHERE 名称='%s'",sName);
		rst.Open(sSQL,adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=false;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("适用车型");
		m_Grid.m_Edit.AutoPosition();
		break;
	case 2:
		m_Grid.m_Edit.SetReadOnly(false);
		m_Grid.m_Edit.NumberOnly(false);
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sType=m_Grid.GetItemText(m_Grid.GetRow(),1);
		sSQL.Format("SELECT DISTINCT 名称,规格 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s'",sName,sType);
		rst.Open(sSQL,adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=false;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("规格");
		m_Grid.m_Edit.AutoPosition();
		break;
	case 3:
		m_Grid.m_Edit.SetReadOnly(false);
		m_Grid.m_Edit.NumberOnly(false);
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sType=m_Grid.GetItemText(m_Grid.GetRow(),1);
		sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
		sSQL.Format("SELECT DISTINCT 名称,产地 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s'",sName,sType,sSpec);
		rst.Open(sSQL,adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=false;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("产地");
		m_Grid.m_Edit.AutoPosition();
		break;
	case 4:
		m_Grid.m_Edit.SetReadOnly(false);
		m_Grid.m_Edit.NumberOnly(false);
		m_Grid.m_Edit.PopHide=false;
		m_Grid.m_Edit.EnterNumber=0;     
		m_Grid.m_Edit.ClearAll();
		sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sType=m_Grid.GetItemText(m_Grid.GetRow(),1);
		sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
		sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3);
		sSQL.Format("SELECT DISTINCT 名称,计量单位 from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s' AND 产地='%s'",sName,sType,sSpec,sAddr);
		rst.Open(sSQL,adCmdText);		
		m_Grid.m_Edit.StartUpAssciation=false;
		m_Grid.m_Edit.SetRecordset(rst);
		m_Grid.m_Edit.SetSelectField("计量单位");
		m_Grid.m_Edit.AutoPosition();
		break;
	case 5:
		m_Grid.m_Edit.PopHide=true;
		m_Grid.m_Edit.NumberOnly(true);
		m_Grid.m_Edit.SetReadOnly(true);
		m_Grid.m_Edit.HideGrid();
		break;
	case 6:
		m_Grid.m_Edit.PopHide=true;
		m_Grid.m_Edit.NumberOnly(true);
		m_Grid.m_Edit.SetReadOnly(false);
		m_Grid.m_Edit.HideGrid();
	}
}


void CDCheck::OnCellKillFocus()
{
	CString sSQL,sID,sName,sType,sSpec,sAddr,sNumber,Store,StoreID;
	this->m_EdtStore.GetWindowText(Store);
	StoreID=ado.FieldToOtherField("仓库信息表","名称",Store,"编号",1);
	if(m_Grid.GetCol()==4)
	{
		sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
		sType=m_Grid.GetItemText(m_Grid.GetRow(),1);
		sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
		sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3);
		sSQL.Format("SELECT * from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s' AND 产地='%s'",sName,sType,sSpec,sAddr);
		rst.Open(sSQL,adCmdText);
		sID=rst.GetFieldValue("编号");
		sSQL.Format("SELECT* FROM 库存信息表 WHERE 商品编号='%s' AND 仓库=%s",sID,StoreID);
		rst.Open(sSQL,adCmdText);
		if(rst.GetRecordCount()>0)
			sNumber=rst.GetFieldValue("库存数量");
		else
			sNumber="0";
		m_Grid.SetItemText(m_Grid.GetRow(),5,sNumber);
	}
	if(m_Grid.GetCol()==5)
	{
		sNumber=m_Grid.GetItemText(m_Grid.GetRow(),5);
		if(sNumber.IsEmpty())
		{
			sName=m_Grid.GetItemText(m_Grid.GetRow(),0);
			sType=m_Grid.GetItemText(m_Grid.GetRow(),1);
			sSpec=m_Grid.GetItemText(m_Grid.GetRow(),2);
			sAddr=m_Grid.GetItemText(m_Grid.GetRow(),3);
			sSQL.Format("SELECT * from 商品信息查询 WHERE 名称='%s' AND 适用车型='%s' AND 规格='%s' AND 产地='%s'",sName,sType,sSpec,sAddr);
			rst.Open(sSQL,adCmdText);
			sID=rst.GetFieldValue("编号");
			sSQL.Format("SELECT* FROM 库存信息表 WHERE 商品编号='%s' AND 仓库=%s",sID,StoreID);
			rst.Open(sSQL,adCmdText);
			sNumber=rst.GetFieldValue("库存数量");
			m_Grid.SetItemText(m_Grid.GetRow(),6,sNumber);
		}
		else
		{
			m_Grid.SetItemText(m_Grid.GetRow(),6,sNumber);
	
		}

	}
}

void CDCheck::OnInputButsave() 
{
	if(MessageBox("确定要保存此盘点单吗?","系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1)
		return;	
	CString sSQL,sID,sDate,sStore,sStoreID,sDear,sDearID,sOPID;
	m_StaID.GetWindowText(sID);
	sID.TrimRight();
	m_StaDate.GetWindowText(sDate);
	sDate.TrimRight();
	m_EdtDear.GetWindowText(sDear);
	sDearID=ado.FieldToOtherField("员工信息表","姓名",sDear,"编号",1);
	m_EdtStore.GetWindowText(sStore);
	sStoreID=ado.FieldToOtherField("仓库信息表","名称",sStore,"编号",1);
	sOPID=ado.FieldToOtherField("操作员信息表","用户名",OP,"编号",1);
	CString sName,sSpec,sAddr,sType,sWareID,sNumber,sCheckNumber;
	for(int i=0;i<m_Grid.GetItemCount()-1;i++)
	{
		sName=m_Grid.GetItemText(i,0);
		sType=m_Grid.GetItemText(i,1);
		sSpec=m_Grid.GetItemText(i,2);
		sAddr=m_Grid.GetItemText(i,3);
		sNumber=m_Grid.GetItemText(i,5);
		sCheckNumber=m_Grid.GetItemText(i,6);

		sSQL.Format("SELECT * FROM 商品信息表 WHERE 名称='%s'AND 适用车型='%s'AND 规格='%s' AND 产地='%s' ",sName,sType,sSpec,sAddr);
		rst.Open(sSQL,adCmdText);
		sWareID=rst.GetFieldValue("编号");
		//添入盘点信息表
		sSQL.Format("Insert into 盘点信息表 Values ('%s',#%s#,%s,'%s',%s,%s,%s,%s)",sID,sDate,sStoreID,sWareID,sNumber,sCheckNumber,sOPID,sDearID);
		rst.Open(sSQL,adCmdText);
		//更改库存信息
		sSQL.Format("SELECT * FROM 库存信息表 WHERE 仓库=%s AND 商品编号='%s'",sCheckNumber,sStoreID,sWareID);
		rst.Open(sSQL,adCmdText);
		if(rst.GetRecordCount()<1)
			sSQL.Format("Insert Into 库存信息表 Values('%s',%s,%s)",sWareID,sStoreID,sCheckNumber);
		else
			sSQL.Format("UpDate 库存信息表 Set 库存数量=%s WHERE 仓库=%s AND 商品编号='%s'",sCheckNumber,sStoreID,sWareID);
		rst.Open(sSQL,adCmdText);
	} 
	this->Enabled(true);
	this->m_ButPrint.SetFocus();	
}

void CDCheck::OnInputButundo() 
{
	if(MessageBox("确定要撤消操作吗?","系统提示",MB_OKCANCEL|MB_ICONQUESTION)!=1)
		return;	
	this->Enabled(true);
	this->m_ButBookin.SetFocus();
	
}

void CDCheck::OnInputButprint() 
{
	CString sID,sDate,sName,sStore,sDear;
	RxRecordset brst;
	brst.Open("系统设置表");
	sName=brst.GetFieldValue("公司名称");
	this->m_StaID.GetWindowText(sID);
	this->m_StaDate.GetWindowText(sDate);
	this->m_EdtStore.GetWindowText(sStore);
	this->m_EdtDear.GetWindowText(sDear);
	m_ps.MainCaptionFontSize=400;
	m_ps.DeckCaptionFontSize=180;

	sName=sName+"库存盘点单";
	m_ps.MainCaption=sName;
	m_ps.DeckCaptionNumber=3;
	m_ps.DeckCaptions[0]="盘点编号:"+sID;
	m_ps.DeckCaptions[1]="盘点日期:"+sDate;
	m_ps.DeckCaptions[2]="盘点仓库:"+sStore;
	m_ps.TotalNumber=1;
	m_ps.Totals[0]="经手人:"+sDear;
	m_ps.Grid=&m_Grid;
	theApp.Print();	
}